"""
题目：实现一个函数，计算单链表中节点的个数（长度）。
"""


class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next


def get_length(head):
    length = 0  # 初始化长度为0
    current = head  # 从头部开始遍历

    # 遍历链表，每遇到一个节点，长度加1
    while current:
        length += 1  # 长度加1
        current = current.next  # 移动到下一个节点

    return length  # 返回总长度


# 辅助函数（复用）
def create_linked_list(arr):
    if not arr:
        return None
    head = ListNode(arr[0])
    current = head
    for val in arr[1:]:
        current.next = ListNode(val)
        current = current.next
    return head


# 测试
head1 = create_linked_list([1, 2, 3, 4, 5])
print(get_length(head1))  # 输出: 5

head2 = create_linked_list([])  # 空链表
print(get_length(head2))  # 输出: 0
